
//FIRE
ACTOR Kamikazenado //No, you read that right.
{
	Radius 18
	Height 24
	Speed 50
	Damage 8
	Projectile
	+RIPPER
	+BLOODLESSIMPACT
	+BOUNCEONFLOORS
	+BOUNCEONCEILINGS
	BounceFactor 1.0
	Renderstyle Add
	Obituary "%o was wrecked apart by %k's kamikazenado."
	Scale 1
	var int user_counter;
	States
	{
	Spawn:
		TRND A 0 NoDelay A_PlaySound("Weapons/TornadoLoop",6,0.9,1)
		TRND A 0 A_SetUserVar("user_counter",random(3,5))
	Looplet:
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" A 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" A 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" A 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		
		"####" A 0 A_SpawnItemEx("KamikazeProjectile1",0,0,0,frandom(5.0,15.0),0,frandom(25.0,15.0),frandom(0.0,360.0),SXF_TRANSFERPOINTERS)
		
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" B 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" B 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" B 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" C 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" C 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		"####" A 0 A_ChangeVelocity (frandom(-5.5, 5.5), frandom(-5.5, 5.5), frandom(-2.75, 2.75), 0)
		"####" C 1 A_SpawnItemEx("KamikazenadoTrail",frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(3.0,-3.0),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.2,-0.2),frandom(0.0,360.0),SXF_CLIENTSIDE)
		
		"####" A 0 A_SetUserVar("user_counter", user_counter - 1)
		"####" A 0 A_JumpIf(user_counter <= 0, "Death")
		Loop
	Death:
	    TRND A 0 A_StopSound(6)
		TRND A 0 A_Jump(256,"DeathA","DeathB","DeathC")
	DeathA:
		TRND A 0 A_JumpIf(ScaleX <= 0,"NULL")
		TRND A 0 A_SetScale(ScaleX-0.05)
		TRND A 1 A_FadeOut(0.05)
		Loop
	DeathB:
		TRND A 0 A_JumpIf(ScaleX <= 0,"NULL")
		TRND A 0 A_SetScale(ScaleX-0.05)
		TRND B 1 A_FadeOut(0.05)
		Loop
	DeathC:
		TRND A 0 A_JumpIf(ScaleX <= 0,"NULL")
		TRND A 0 A_SetScale(ScaleX-0.05)
		TRND C 1 A_FadeOut(0.05)
		Loop
	}
}

ACTOR KamikazenadoTrail
{
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.5
	States
	{
	Spawn:
		TRND A 0
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" A 1 A_FadeOut(0.05)
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" A 1 A_FadeOut(0.05)
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" A 1 A_FadeOut(0.05)

		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" B 1 A_FadeOut(0.05)
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" B 1 A_FadeOut(0.05)
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" B 1 A_FadeOut(0.05)
		
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" C 1 A_FadeOut(0.05)
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" C 1 A_FadeOut(0.05)
		"####" A 0 A_JumpIf(ScaleX <= 0,"NULL")
		"####" A 0 A_SetScale(ScaleX-0.05)
		"####" C 1 A_FadeOut(0.05)
		Loop
	}
}

ACTOR KamikazeProjectile1
{
	Speed 20
	Radius 16
	Height 20
	Damage 25
	Scale 0.7
	PROJECTILE
	-NOGRAVITY
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	WallBounceFactor 1.0
	BounceFactor 1.0
	Gravity 1.0
	Obituary "%o should have seen (or at least hear) that kamikaze coming."
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("Weapons/KamikazeLoop",5,0.6,1)
		BKAM ABCD 2 A_SetAngle(Angle+45)
		Loop
	Death:
		BKAM A 0 A_SpawnItemEx("KamikazeProjectile2",0,0,0,frandom(15.0,25.0),0,0,0,SXF_TRANSFERPOINTERS)
		Stop
	XDeath:
		TNT1 A 0 A_PlaySound("Weapons/BustExplo",5)
		TNT1 A 0 A_JumpIfInTargetInventory("NukerUpgrade",1,"NukerXDeath")
		TNT1 A 0 A_Explode(12,128)
		TNT1 A 0 A_Explode(116,128,0)
		TNT1 A 0 A_SpawnItemEx("MissileExplode",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("KamikazeGLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		Goto DeathMain
	NukerXDeath:
		TNT1 A 0 A_Explode(24,192)
		TNT1 A 0 A_Explode(232,192,0)
		TNT1 A 0 A_SpawnItemEx("NukerMissileExplode",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 1 A_SpawnItemEx("KamikazeGLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		Goto DeathMain
	DeathMain:
		TNT1 A 0 A_SpawnItemEx("KamikazeTrup",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		Stop
	}
}

ACTOR KamikazeTrup
{
	-NOGRAVITY
	States
	{
	Spawn:
		POSS OPQRST 4
	Looplet:
		POSS U 105 A_CheckSight("GoAway")
		Loop
	GoAway:
		POSS U 1 A_FadeOut(0.1)
		Loop
	}
}

ACTOR KamikazeProjectile2 : KamikazeProjectile1
{
	+NOGRAVITY
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	+FLOORHUGGER
	+SEEKERMISSILE
	var int user_counter;
	States
	{
	Spawn:
		TNT1 A 0 NoDelay A_PlaySound("Weapons/KamikazeLoop",5,0.6,1)
		TNT1 A 0 A_SetUserVar("user_counter",random(8,10))
	Looplet:
		TNT1 A 0 A_SetUserVar("user_counter", user_counter - 1)
		TNT1 A 0 A_JumpIf(user_counter <= 0, "Death")
		BKAM ABCD 4 A_SeekerMissile(20,40,SMF_LOOK,100,7)
		Loop
	Death:
	XDeath:
		TNT1 A 0 A_StopSound(5) //because this playsound doesn't cancel the loop for no good reason.
		TNT1 A 0 A_PlaySound("Weapons/BustExplo",5)
		TNT1 A 0 A_Stop
		
		TNT1 A 0 A_JumpIfInTargetInventory("NukerUpgrade",1,"NukerXDeath")
		TNT1 A 0 A_Explode(10,128)
		TNT1 A 0 A_Explode(80,128,0)
		TNT1 A 0 A_SpawnItemEx("MissileExplode",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SpawnItemEx("KamikazeGLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		Goto DeathMain
	NukerXDeath:
		TNT1 A 0 A_Explode(20,192)
		TNT1 A 0 A_Explode(180,192,0)
		TNT1 A 0 A_SpawnItemEx("NukerMissileExplode",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 1 A_SpawnItemEx("KamikazeGLDEF",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		Goto DeathMain
	}
}

ACTOR KamikazeGLDEF
{
	+NOINTERACTION
	+CLIENTSIDEONLY
	States
	{
	Spawn:
	TNT1 BCD 5
	Stop
	}
}

//ALT-FIRE

ACTOR MutilatorAirblast
{
    Obituary "IMMA BE BARANKE FOR TEH AWESUM, DERP DERP DERP DERP DERP DERP"
    +NOINTERACTION
    +NOGRAVITY
    States
    {
    Spawn:
      TNT1 AA 0 A_SpawnItemEx("MutilatorAir", random(6,-6), random(6,-6), random(6,-6), 0.1*frandom(2,4), 0.1*frandom(2,4), 0.1*frandom(-3,3), random(0,360), 128, 0)
      TNT1 AA 3 A_SpawnItemEx("MutilatorAir", random(6,-6), random(6,-6), random(6,-6), 0.1*frandom(2,4), 0.1*frandom(2,4), 0.1*frandom(-3,3), random(0,360), 128, 0)
      Stop
    }
}

ACTOR MutilatorAir : MissileExpSmoke
{ 
    Scale 0.4
    Renderstyle Add
}

//ZOOM ADD. FIRE

ACTOR MutilatorAirflector //A word-play on Reflector and Air... Ain't I smartypants!?
{
	Radius 16
	Height 12
	Speed 15
	Damage 2
	PROJECTILE
	+SHOOTABLE
	+REFLECTIVE
	+DEFLECT
	+THRUGHOST
	+GHOST
	+INVULNERABLE
	+BLOODLESSIMPACT
	+SKYEXPLODE
	+BOUNCEONACTORS
	+DONTSPLASH
	-NOBLOCKMAP
	ProjectileKickback 1700
	Renderstyle Add
	BounceType Hexen
	BounceFactor 1
	Scale 0.4
	Alpha 0.4
    States
    {
    Spawn:
      SMKE A 0
      SMKE A 0 A_ChangeVelocity (frandom(-6, 4), 0, 0, 0)
      SMKE A 0 A_FadeOut(0.1)
      SMKE A 0 A_Jump(255,"SmokeA","SmokeB","SmokeC","SmokeD","SmokeE","SmokeF","SmokeG","SmokeH","SmokeI","SmokeJ","SmokeK")
    SmokeA:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE A 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeB:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE B 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeC:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE C 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeD:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE D 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeE:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE E 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeF:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE F 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeG:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE G 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeH:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE H 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeI:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE I 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeJ:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE J 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeK:
      SMKE A 0 A_FadeOut(0.03)
      SMKE A 0 A_SpawnItemEx("MutilatorAirflectorTrail",random(4,-4),random(7,-7),random(7,-7),frandom(0.075,0.1),frandom(0.075,0.1),frandom(0.075,0.13),random(0,359),128,0)
      SMKE A 3 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    }
}

ACTOR MutilatorAirflectorTrail : MutilatorAirflector
{
	+CLIENTSIDEONLY
    States
    {
    Spawn:
      SMKE A 0
      SMKE A 0 A_FadeOut(0.1)
      SMKE A 0 A_Jump(255,"SmokeA","SmokeB","SmokeC","SmokeD","SmokeE","SmokeF","SmokeG","SmokeH","SmokeI","SmokeJ","SmokeK")
    SmokeA:
      SMKE A 0 A_FadeOut(0.035)
      SMKE A 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeB:
      SMKE A 0 A_FadeOut(0.035)
      SMKE B 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeC:
      SMKE A 0 A_FadeOut(0.035)
      SMKE C 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeD:
      SMKE A 0 A_FadeOut(0.035)
      SMKE D 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeE:
      SMKE A 0 A_FadeOut(0.035)
      SMKE E 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeF:
      SMKE A 0 A_FadeOut(0.035)
      SMKE F 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeG:
      SMKE A 0 A_FadeOut(0.035)
      SMKE G 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeH:
      SMKE A 0 A_FadeOut(0.035)
      SMKE H 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeI:
      SMKE A 0 A_FadeOut(0.035)
      SMKE I 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeJ:
      SMKE A 0 A_FadeOut(0.035)
      SMKE J 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    SmokeK:
      SMKE A 0 A_FadeOut(0.035)
      SMKE A 2 A_SetScale(ScaleX +0.005, ScaleY +0.005)
      Loop
    }
}

//TRES-FIRE
ACTOR MutilatorBoom
{
   Obituary "%k spewed on %o a cloud of explosions with fatal results for %h."
   Radius 6
   Height 9
   Speed 50
   Damage 14
   //BounceType Doom
   //BounceCount 2
   ReactionTime 9
   PROJECTILE
   +RANDOMIZE
   +THRUGHOST
   +FORCERADIUSDMG
   +EXPLODEONWATER
   +RIPPER
   States
   {
   Spawn:
      TNT1 A 0
      TNT1 A 0 A_PlaySound("weapons/larpaexp")
      TNT1 A 0 A_Countdown
      TNT1 A 0 A_JumpIfInTargetInventory("NukerUpgrade",1,"NukerSpawn")
      TNT1 A 0 A_Explode(192,128,0)
      TNT1 A 2 A_SpawnItemEx("MutilatorExplode",frandom(3,-3),frandom(3,-3),frandom(3,-3),0,0,0,0,SXF_CLIENTSIDE,0)
      Loop
   Death:
      TNT1 A 1
      Stop
   NukerSpawn:
      TNT1 A 0 A_Explode(384,256,0)
      TNT1 A 2 A_SpawnItemEx("NukerMutilatorExplode",frandom(3,-3),frandom(3,-3),frandom(3,-3),0,0,0,0,SXF_CLIENTSIDE,0)
      goto Spawn
   }
}

ACTOR MutilatorExplode
{ 
    +NOINTERACTION
    +NOGRAVITY
	+CLIENTSIDEONLY
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 AA 0 A_SpawnItemEx("MutilatorExploder", 0, 0, 0, 0.1*random(13,20), 0.1*random(13,20), 0.1*random(13,20), random(0,360), 128, 0)
      TNT1 A 0 A_SpawnItemEx("PelletExpSmoke", 0, 0, 0, 0.1*random(1,3), 0.1*random(1,3), 0.1*random(1,3), random(0,360), 128, 0)
      TNT1 BB 2 A_SpawnItemEx("PelletExpSmoke", 0, 0, 0, 0.1*random(1,3), 0.1*random(1,3), 0.1*random(1,3), random(0,360), 128, 0)
      TNT1 CD 4
      Stop
    }
}

ACTOR MutilatorExploder
{ 
    +NOINTERACTION
    +NOGRAVITY
	+CLIENTSIDEONLY
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 AAA 2 A_SpawnItemEx("PelletExp", 0.1*random(40,30), 0.1*random(40,30), 0.1*random(40,30), 0, 0, 0, 0, 128, 0)
      Stop
    }
}

//NUKER UPGRADE
ACTOR NukerMutilatorExplode
{ 
    +NOINTERACTION
    +NOGRAVITY
	+CLIENTSIDEONLY
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 A 0 A_SpawnItemEx("NukerPelletFlash",0,0,0,0,0,0,0,128,0)
      TNT1 A 0 A_SpawnItemEx("NukerMutilatorExploder",0,0,0,0,0,0,0,128,0)
      TNT1 A 0 A_SpawnItemEx("NukerMutilatorSmoker",0,0,0,0,0,0,0,128,0)
      TNT1 A 1
      Stop
    }
}

ACTOR NukerMutilatorExploder
{
    +NOINTERACTION
    +NOGRAVITY
	+CLIENTSIDEONLY
    States
    {
    Spawn:
      TNT1 A 0
      TNT1 AAA 2 A_SpawnItemEx("NukerPelletExp", random(3,-3), random(3,-3), random(3,-3), 0, 0, 0, 0, 128, 0)
      Stop
    }
}

ACTOR NukerMutilatorSmoker
{
    +NOINTERACTION
    +NOGRAVITY
	+CLIENTSIDEONLY
    States
    {
    Spawn:
      TNT1 A 7
      TNT1 AAA 0 A_SpawnItemEx("NukerPelletExpSmoke", random(6,-6), random(6,-6), random(6,-6), 0.1*frandom(2,4), 0.1*frandom(2,4), 0.1*frandom(-3,3), random(0,360), 128, 0)
      TNT1 AA 2 A_SpawnItemEx("NukerPelletExpSmoke", random(6,-6), random(6,-6), random(6,-6), 0.1*frandom(2,4), 0.1*frandom(2,4), 0.1*frandom(-3,3), random(0,360), 128, 0)
      Stop
    }
}